package zsc.nine.onlinemall.mapper;

import org.apache.ibatis.annotations.*;
import zsc.nine.onlinemall.entity.Admin;

import java.util.List;

/**
 * @author : 莫远烙
 * @version :1.0
 */
@Mapper
public interface AdminMapper {

    /**
     *
     * @param admin 管理员类
     * @return true:成功,false:失败
     */
    //添加管理员
    //(adminId,adminEmail,adminName,adminPassword,registerDate,adminStatus)
    @Insert("insert into t_admin(adminId,adminEmail,adminName,adminPassword,registerDate,adminStatus)" +
            "values(#{adminId},#{adminEmail},#{adminName},#{adminPassword},#{registerDate},#{adminStatus})")
    boolean insertAdmin(Admin admin);

    /**
     *
     * @param adminEmail 管理员Email
     * @return true:成功,false:失败
     */
    //根据邮箱删除管理员
    @Delete("delete from t_admin where adminEmail = #{adminEmail}")
    boolean deleteAdmin(String adminEmail);

    /**
     *
     * @return 管理员列表
     */
    @Select("select * from t_admin")
    List<Admin> findAllAdmin();

    /**
     *
     * @param adminEmail 管理员邮箱
     * @return true:成功,false:失败
     */
    //根据邮箱查找管理员
    @Select("select * from t_admin where adminEmail=#{adminEmail}")
    Admin findAdminByEmail(String adminEmail);

    /**
     *
     * @param adminEmail 管理员邮箱
     * @param adminPassword 待更新邮箱
     * @return true:成功,false:失败
     */
    //更新管理员密码
    @Update("Update t_admin set adminPassword=#{adminPassword} where adminEmail=#{adminEmail}")
    boolean updatePasswordByEmail(String adminEmail, String adminPassword);

    /**
     *
     * @param adminEmail 管理员邮箱
     * @param adminStatus 管理员状态
     * @return true:成功,false:失败
     */
    //更改管理员权限
    @Update("Update t_admin set adminStatus=#{adminStatus} where adminEmail=#{adminEmail}")
    boolean updateStatusByEmail(String adminEmail, int adminStatus);

    //分页查询

    /**
     * @param key:排序索引可选字段：Admin类的属性
     * @param index                  分页起始位置
     * @param pageSize               分页大小
     * @return Order 列表升序
     * @deprecated 参数key不生效
     */
    @Select("select * from t_admin order by #{key} asc limit #{index},#{pageSize} ")
    List<Admin> pagedFind(String key, int index, int pageSize);

    /**
     * @param index    分页起始位置
     * @param pageSize 分页大小
     * @return Order 列表降序
     */
    @Select("select * from t_admin order by adminId desc limit #{index},#{pageSize} ")
    List<Admin> pagedFindByIdDesc(int index, int pageSize);

    /**
     * @param index    分页起始位置
     * @param pageSize 分页大小
     * @return Order 列表升序
     */
    @Select("select * from t_admin order by adminId asc limit #{index},#{pageSize} ")
    List<Admin> pagedFindByIdAsc(int index, int pageSize);

    /**
     * @return 共有多少行数
     * @author Zainus
     */
    @Select("select count(adminId) from t_admin")
    String getLength();

}
